0884. 两句话中的不常见单词【简单】
1. 📝 题目描述
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现,那么这个单词就是 不常见的。
给你两个 句子 s1 和 s2,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。
示例 1:
txt
输入:s1 = "this apple is sweet", s2 = "this apple is sour"
输出:["sweet","sour"]1
2
2
示例 2:
txt
输入:s1 = "apple apple", s2 = "banana"
输出:["banana"]1
2
2
提示:
1 <= s1.length, s2.length <= 200s1和s2由小写英文字母和空格组成s1和s2都不含前导或尾随空格s1和s2中的所有单词间均由单个空格分隔
2. 🎯 s.1 - 暴力解法
js
/**
* @param {string} s1
* @param {string} s2
* @return {string[]}
*/
var uncommonFromSentences = function (s1, s2) {
// 将两个句子拆分成单词数组并合并
const words = [...s1.split(' '), ...s2.split(' ')]
// 统计每个单词出现的次数
const wordCount = {}
for (const word of words) {
wordCount[word] = (wordCount[word] || 0) + 1
}
// 找出只出现一次的单词
const result = []
for (const word in wordCount) {
if (wordCount[word] === 1) {
result.push(word)
}
}
return result
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- 时间复杂度:
,其中 和 分别是两个句子的单词数量 - 空间复杂度:
,用于存储单词和词频统计 - 算法思路:
- 合并单词列表:将
s1和s2两个句子分别按空格分割成单词数组,然后合并成一个数组 - 统计词频:使用对象
wordCount记录每个单词出现的次数 - 筛选结果:遍历词频统计对象,将出现次数为 1 的单词加入结果数组
- 合并单词列表:将